package com.example.common.factory.presenter;

import androidx.annotation.StringRes;

/**
 * @author:0.2℃
 * @date： 2022-01-01 16:36
 * @version:
 * @Description ： MVP模式中公共的基本七月契约
 */
public interface BaseContract {
    /**
     * setPresenter因为需要根据不同的类set不同的presenter，所以我们要支持泛型
     */
    interface View<T extends Presenter> {
        /**
         * 公共的：显示一个字符串错误
         */
        void showError(@StringRes int str);

        /**
         * 公共的：显示进度条
         */
        void showLoading();

        /**
         * 支持设置一个
         * 因为不能把presenter暴露给界面，即不能把实现暴露给界面
         * 只能把接口暴露给他
         */
        void setPresenter(T presenter);
    }

    interface Presenter {
        /**
         * 公用的开始触发
         */
        void start();

        /**
         * 公用的销毁触发
         */
        void destroy();
    }
}
